草庐IT

异步 接收

全部标签

javascript - 在 Node.js 中等待异步函数返回

假设,我在Node.js中有一个异步函数,基本上是这样的:varaddAsync=function(first,second,callback){setTimeout(function(){callback(null,first+second);},1*1000);};现在我当然可以以异步方式调用这个函数:addAsync(23,42,function(err,result){console.log(result);//=>65});我想知道的是,您是否可以通过某种方式同步调用此函数。为此,我想要一个包装器函数sync,它基本上执行以下操作:varsync=function(fn,pa

javascript - Ractive.js 中的异步数据加载

我喜欢在渲染ractive模板时引入一些远程数据。由于请求的异步性质,没有数据进入输出。我怎样才能做到这一点?varractive=newRactive({debug:true,el:'container',template:'#template',data:{chapters:chapters,load_text:function(path){$.get(path,function(text){returntext;});}}}); 最佳答案 我想到了几个解决方案;创建Ractive对象,发出请求,然后在有数据时在ractive对

javascript - Node.js 的异步调用和递归

我希望在递归函数完全完成时执行回调,该函数可以持续不确定的时间量。我正在为异步问题而苦苦挣扎,希望能在这里得到一些帮助。使用request模块的代码如下:varstart=function(callback){request.get({url:'aaa.com'},function(error,response,body){varstartingPlace=JSON.parse(body).id;recurse(startingPlace,callback);});};varrecurse=function(startingPlace,callback){request.get({ur

javascript - 无法应对 navigator.geolocation 的异步性质

我在firefox3.6中使用navigator.geolocation.getCurrentPosition(function)api。当我尝试反复调用此方法时,我发现它有时有效,有时无效。我认为问题是因为它的异步回调性质。我可以看到回调函数在某个时候被调用,但我的外部函数已经退出,所以我无法捕获位置坐标的值。我是javascript的新手,所以我假设其他javascript编码人员可能已经知道如何处理它。请帮忙。编辑:这是我正在使用的一段代码示例functiongetCurrentLocation(){varcurrLocation;if(navigator.geolocation

javascript - 在 NodeJS 中需要一个异步函数

我正在努力了解NodeJS中的async/await。我在文件中有一个函数如下:constgetAccessToken=async()=>{returnnewPromise((resolve,reject)=>{constoauthOptions={method:'POST',url:oauthUrl,headers:{'Authorization':'Basic'+oauthToken},form:{grant_type:'client_credentials'}};request(oauthOptions).then((err,httpResponse,body)=>{if(err

javascript - node-js 中的异步/等待获取

constfetch=require("node-fetch");asyncfunctiongetPokemon(){constresponse=awaitfetch('https://pokeapi.co/api/v2/pokemon/1');console.log(response);returnresponse;}getPokemon();我不确定这是否有效。我回来了:Response{size:0,timeout:0,[Symbol(Bodyinternals)]:{body:Gunzip{_readableState:[ReadableState],readable:true

javascript - 如何检测异步加载的 jquery 何时完成加载?

我想在页面上异步加载jquery,然后加载另一个依赖于jquery的脚本(它在加载时执行jquery代码)。但是我如何检测jquery是否已经完成加载。jquery中是否有一个事件会在库完成加载时触发?理论上我可以像这样加载jquery:但我希望代码也能在可能不支持async和onload属性的旧浏览器上运行。(在这种情况下,jquery是同步加载的。)这就是为什么我要寻找jquery在加载时发出的事件。有吗? 最佳答案 你可以试试这个:varscript=document.createElement('script');scrip

javascript - 在 AWS Lambda 中使用异步关键字

我正在使用Node.js玩AWSLambda。在厌倦了处理回调之后,我想我可以优雅地使用async/await就像我在C#中习惯的那样。exports.handler=async(event,context,callback)=>{db=awaitMongoClient.connect(process.env['MONGODB_URI']);}尽管这在使用lambda-local进行离线测试时看似可行,但在上传到AWS时却惨遭失败。似乎无法识别async关键字。我在AWS上使用最新的Node.js6.10运行时,而我的本地版本是8.5。有没有办法解决,或者我应该放弃这种方法并重新使用回

javascript - 如何在异步模式下使用 XMLHttpRequest 设置多个 header 数据?

我的api调用要求我在header中传递apikey,但我从api服务返回错误{"error":"2424452","message":"InvalidApiKey"}我知道我的apikey是有效的,因为我可以在Python中进行相同的api调用,例如:req=requests.Session()req.headers.update({'x-api-key':'my-api-key','X-Product':'my-product-name'})req.get(url)但在javscript中,同样的调用会出错。我相信我没有正确设置header或其他东西?varreq=newXMLHt

javascript - 真正的异步、非阻塞 javascript 不是不可能的吗?

所以,我在这里遗漏了什么吗?所有流行的现代浏览器中的javascript引擎(截至2011年)都是单线程。这意味着虽然EVENTS可以异步发生,但它们仍然排队(在“单个文件”中)以待执行。这意味着所有这些将外部javascript加载到HTML页面的技术,它们实际上只允许异步发生下载,但是下载代码的执行总是发生一个(函数)一次,一次一个文件。所以我在网上看到的其他“提示”使用setTimeout分解和执行初始化代码块,那将是虚假的、不正确的建议——计时器也是一个单文件队列,并且只按顺序执行。使用setTimeout你只是通过定时器导致乱序执行并允许浏览器中的其他事件(即鼠标点击或按键等